package com.eii.eiitask.task;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * @description:
 * @author: eii
 * @time: 2020/7/10 8:22 下午
 */
@Component
public class ConsumerTask {

    private static Logger logger = LoggerFactory.getLogger(ConsumerTask.class);

//    @Scheduled(cron = "0/3 * * * * *")//每隔3秒执行
    public void task1() {
        logger.info("===================测试定时任务1 开始===================");

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        logger.info("===================测试定时任务1 结束===================");
    }

    //注意,没有使用线程池时，多个使用fixedRate 的方法，是fixedRate串行执行的
    //在使用线程池配置后，才是并行执行
    @Scheduled(fixedRate = 3000)//在任务开始 3秒后执行下一次调度
//    @Scheduled(fixedDelay = 3000)//在任务开始 3秒才开始执行
    public void task2() {
        logger.info("===================测试定时任务2 开始===================");

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        logger.info("===================测试定时任务2 结束===================");
    }

    //注意在多个使用fixedRate 的方法 时，是fixedRate串行执行的
    @Scheduled(fixedRate = 3000)//在任务开始 3秒后执行下一次调度
    public void task3() {
        logger.info("===================测试定时任务3 开始===================");

        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        logger.info("===================测试定时任务3 结束===================");
    }
}
